import en from './en.json'
import zhHans from './zh-Hans.json'
import zhHant from './zh-Hant.json'
import {
	crc32
} from 'crc';
import {
	createI18n
} from 'vue-i18n' // v9.x

//tabbar 标题i18n的json只能单层级，不能嵌套多层级：如：{'a':{'key':'c'}}应该改为{'a.key':'c'},也可以封装一个将多层json转换成单层json的函数
//scanner新增
const i18n = {
	install: function(Vue) {
		const messages = {
			en,
			'zh-Hans':zhHans,
			'zh-Hant':zhHant
		}
		const i18nIns = createI18n({
			// 全局注入 $t 函数
			globalInjection: true,
			fallbackLocale: 'zh-Hans',
			locale: uni.getLocale(), //默认选择的语言
			legacy: false, // 使用 Composition API 模式，则需要将其设置为false
			messages
		})
		Vue.use(i18nIns)
		//适配app端，i18n无法使用占位符
		const translateTxt = function(txt, obj) {
			for (let key in obj) {
				let re = new RegExp('\\{'+key+'\\}');
				txt = txt.replace(re, obj[key])
			}
			return txt;
		}
		const lang = function(key, obj) {
			let words = key;
			let hashKey = `k${crc32(key).toString(16)}`; // 将中文转换成crc32格式去匹配对应的json语言包
			if (obj || (/[\u4e00-\u9fa5]/.test(key) && uni.getLocale() != "zh-Hans")) { //非中文才进行翻译，防止多次$t
				words = i18nIns.global.t(hashKey,obj)//只有在H5环境会生效
				// #ifdef APP-PLUS
					if(obj){
						words=translateTxt(words,obj)
					}
				// #endif
				if (words == hashKey) {
					words = key;
					// console.log(`"${hashKey}":"${key}",`, "-无匹配语言key");
				}
			}
			return words;
		}
		uni.$lang = lang
		Vue.config.globalProperties.$lang = lang
	}
};
export default i18n